#ifndef MAINMETEO_H
#define MAINMETEO_H

#include <QMainWindow>
#include <QGraphicsPixmapItem>
#include <QHBoxLayout>
#include <QStringList>
#include <QPixmap>
#include <QString>
#include <QDir>
#include <QFileInfoList>
#include <QFileInfo>
#include <QDateTime>
#include <QList>
#include <QThread>
#include <QTextCodec>
#include <QSettings>
#include <QCursor>
#include <QIcon>
#include <QSize>
#include <QPoint>
#include <QCompleter>
#include <QDirModel>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QMenu>
#include <QWidgetAction>
#include <QSpinBox>


#include "mymap.h"
#include "mygview.h"
#include "ui_mainmeteo.h"
#include "settingwindow.h"
#include "about.h"
#include "help.h"

#define PI 3.14159265

namespace Ui {
    class MainMeteo;
}

class MainMeteo : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainMeteo(QWidget *parent = 0);
    ~MainMeteo();
    virtual void keyPressEvent(QKeyEvent *);
    virtual void resizeEvent(QResizeEvent *);

    struct WebItem {
        QString name;
        QString url;
        QString files;
    };

    struct ParamManag{
        QString name;
        QString value;
    };

    struct GlobalSetting {
        QString tmpPath;
        QString catPath;
        QList<QString> masks;
        QList<WebItem> webitems;
        QList<QString> webfiles;
        QList<ParamManag> latparams; //параметры широт
        float scale;
    };




    QTextCodec *q;
    MyMap * scene;
    MyGView * graphView;
    QStringList *loadedFiles;
    QStringList *createdFiles;
    QList<QPixmap> *loadedPixmap;
    QThread *thread;
    QSettings *settings; //настройки файла
    GlobalSetting *globalSet; //настройки программы
    QMenu *advMenu,*advLatMenu;
    QList<ParamManag> *speedParams; //параметры для расчета скорости по изобарам

    int speedParamsIndex;
    int globindex;
    int loadSize,loadBegin; //сколько загружать и со скольки начинать загрузку

    //работа с сетью
    QNetworkAccessManager *netAccess;

    QSize *windowSize;
    QPoint *windowPos;

    int currentFile;

    bool animate;
    bool blockReload; //блокирование двойной загрузки до изменения маски
    float animateTime;

    void init();
    bool loadFiles(QStringList *);
    void getFileNames(QString *);//по маске
    void getFileNames(QStringList *);//по именам файлов (перетаскивании)
    void showPix(int);
    void saveSettings();
    void readSettings();
    void downloadImages(QStringList *);
    void refreshHeader();
    void setvalueParam(int index,QString value);



public slots:
    void dropFiles(QStringList*);
    void lineScale(int);
    void lineMeasure(float);
    void escapePress();
    void reloadSettings();

    void changePix(int);     //смена карттинки
    void hidePanel();        //скрытие всех панелей
    void animatePix_start(); //запуск анимации
    void animatePix_stop();  //остановка анимации

    void setLoadSize(int);
    void setLoadBegin(int);
    void setLatValue(QListWidgetItem*);
    //void dropFiles(QStringList*);

signals:
    void stop_animate();

private slots:
    void on_maskEdit_returnPressed();
    void on_horizontalSlider_valueChanged(int value);

    void on_maskButton_clicked();
    void on_maskBox_currentIndexChanged(QString );
    void on_pushButton_6_clicked();

    void slot_netManagerFinished(QNetworkReply *);

    void on_pushButton_2_toggled(bool checked);

    void on_scaleKmEdit_returnPressed();

    void on_scaleButton_clicked();

    void on_measureButton_toggled(bool checked);

    void on_scalePxEdit_returnPressed();

    void on_action_5_triggered(bool checked);

    void on_action_2_triggered();

    void on_action_4_triggered();

    void on_action_3_triggered();

    void on_action_6_triggered();

    void on_action_7_triggered();

    void on_action_triggered();

    void on_action_10_triggered();

    void on_action_9_triggered();

    void on_action_8_triggered();

    void on_action_11_triggered();

    void on_speedButton_clicked();

    void on_leftButton_clicked();

    void on_rightButton_clicked();

    void on_speedTimeLineEdit_returnPressed();

    void on_advButton_clicked();

    void on_paramComboBox_activated(int index);
    void on_paramEdit_textEdited(const QString &arg1);

    void on_calcSpeedButton_clicked();

    void on_advLatButton_clicked();

private:
    Ui::MainMeteo *ui;
};

#endif // MAINMETEO_H

